package com.order.itemcategoryproject.mapper;

import com.order.itemcategoryproject.pojo.VO.dArcItemVo;
import com.order.itemcategoryproject.pojo.dArcItem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.sql.Date;
import java.util.List;

@Mapper
public interface dArcItemMapper {

    // 通过编号获取所有该小类商品
    List<dArcItem> selectAllItemBySmCategory(@Param("searchValue") String searchValue,
                                             @Param("categoryId") String categoryId,
                                             @Param("storageId") String storageId,
                                             @Param("futureDates") Date futureDates,
                                             @Param("lang") String lang,
                                             @Param("cusSegmentation") String cusSegmentation);

    // 根据编号获取一个商品信息
    dArcItem selectOneItemById(@Param("itemId") String itemId,
                               @Param("storageId") String storageId,
                               @Param("lang") String lang,
                               @Param("cusSegmentation") String cusSegmentation);

    // 获取所有热点商品数据
    List<dArcItem> selectAllHotItemInfoByItemGrade(@Param("storageId") String storageId,
                                                   @Param("futureDates") Date futureDates,
                                                   @Param("itemGrade") String itemGrade,
                                                   @Param("lang") String lang,
                                                   @Param("cusSegmentation") String cusSegmentation);

    // 根据即将入库时间来判断是否更新到页面

    // 根据订单编号和客户编码获取订单数据
    // 通过被创建过的订单明细信息中的订单编号，通过创建的订单编号去主数据表中检索数据
    List<dArcItem> selectAllItemInfoByOrderIdAndCreateStaffId(@Param("orderId") String orderId,
                                               @Param("createStaffId") String createStaffId,
                                               @Param("storageId") String storageId,
                                               @Param("lang") String lang,
                                               @Param("cusSegmentation") String cusSegmentation);


    // 获取到所有的商品信息
    dArcItem selectItemInfoByItemId(@Param("itemId") String itemId,
                                    @Param("storageId") String storageId,
                                    @Param("lang") String lang,
                                    @Param("cusSegmentation") String cusSegmentation);

    // 根据客户名称获取当前客户下有库存的所有系列（itemSeries）
    List<dArcItemVo> selectAllSeriesByItemSeries(@Param("storageId") String storageId,
                                                 @Param("cusSegmentation") String cusSegmentation);

    // 根据商品编号获取图片维护人员编号
    dArcItemVo getStaffIdByItemId(String itemId);

    // 根据商品系列获取当前客户下所有可下单商品
    List<dArcItem> getAllItemSeriesBySeriesName(@Param("storageId") String storageId,
                                                @Param("futureDates") Date futureDates,
                                                @Param("seriesName") String seriesName,
                                                @Param("lang") String lang,
                                                @Param("cusSegmentation") String cusSegmentation);

}
